#ifndef _POCKET_REFINE_H
#define _POCKET_REFINE_H

#include "distancetransform.h"
#include "../data/reg3dvolumedata.h"
#include "../data/proteindata.h"
#include "../data/geometrydata.h"

namespace PBVP {
	///
	class PocketRefine {
	public:
		/// Constructor
		PocketRefine(GeometryData* protein, Reg3DVolumeData* pocketFunc);

		///
		PocketRefine(Reg3DVolumeData* sdf, Reg3DVolumeData* pocketFunc);

		/// Destructor
		~PocketRefine();

		GeometryData* refinePocket(GeometryData *pocket, float eps = 1.5f);
	private:
		/// SDF of the protein surface
		Reg3DVolumeData *m_pProteinSDF;
		/// The original pocket function
		Reg3DVolumeData* m_pPocketFunc;
	};
}

#endif